package com.bcbim.smart_water.file.mapper;

import com.bcbim.common.sys.Code;
import com.bcbim.smart_water_interface.file.dao.FileDAO;
import com.bcbim.smart_water_interface.file.dao.FileLineDAO;
import com.bcbim.smart_water_interface.file.dao.FilePointDAO;
import com.bcbim.smart_water_interface.file.dto.FileDTO;
import com.bcbim.smart_water_interface.file.vo.FileVO;
import com.bcbim.smart_water_interface.file.vo.ListFileVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @version V 1.0.0
 * @Description： 文件管理 mapper接口类
 * @Author: haomeijie
 * @Date: 2021/9/15 13:34
 **/
@Mapper
public interface FileMapper {

    /**
     * @Description： 统计文件夹下有没有文件
     * @Param: folderId 文件夹id
     * @Return: int
     * @Author: haomeijie
     * @Date: 2021/9/15 13:44
     */
    Integer getFileCountByFolderId(String folderId);

    /**
     * @Description： 新增文件
     * @Param: folderId 文件夹id
     * @Param: displayName 文件显示名称
     * @Param: keepName 文件保存名称
     * @Return: int
     * @Author: haomeijie
     * @Date: 2021/9/16 11:29
     */
    Integer insertFile(FileDAO fileDAO);

    /**
     * @Description： 修改文件
     * @Param: folderId 文件夹id
     * @Param: displayName 文件显示名称
     * @Param: keepName 文件保存名称
     * @Param: del 删除标识
     * @Return: int
     * @Author: haomeijie
     * @Date: 2021/9/16 11:29
     */
    Integer updateFile(FileDAO fileDAO);

    /**
     * @Description： 获取文件信息
     * @Param: id 文件id
     * @Return: FileVO
     * @Author: haomeijie
     * @Date: 2021/9/16 13:26
     */
    FileVO getFile(String id);

    /**
     * @Description： 获取文件夹下的所有文件数量
     * @Param: folderId 文件夹id
     * @Param: userId 用户id
     * @Param: displayName 文件名
     * @Return:
     * @Author: haomeijie
     * @Date: 2021/9/16 15:28
     */
    Integer getFileListCountByFolderId(FileDTO fileDTO);

    /**
     * @Description： 获取文件夹下的所有文件列表
     * @Param: folderId 文件夹id
     * @Param: userId 用户id
     * @Param: displayName 文件名
     * @Param: pageNum 当前页码数
     * @Param: pageSize 每页记录条数
     * @Return:
     * @Author: haomeijie
     * @Date: 2021/9/16 15:28
     */
    List<ListFileVO> getFileListByFolderId(FileDTO fileDTO);

    /**
     * 批量添加文件与管点映射关系
     *
     * @param list
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/27 17:12
     */
    int batchInsertFilePoint(List<FilePointDAO> list);

    /**
     * 批量添加文件与管线映射关系
     *
     * @param list
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/27 17:15
     */
    int batchInsertFileLine(List<FileLineDAO> list);

    /**
     * 删除管点文件的映射关系
     *
     * @param fileId
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/28 14:53
     */
    int deleteFilePoint(String fileId);

    /**
     * 删除管线与文件的映射关系
     *
     * @param fileId
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/28 14:53
     */
    int deleteFileLine(String fileId);

    /**
     * 图纸映射列表总数量
     *
     * @param fileDTO
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/28 10:38
     */
    int listFileCount(FileDTO fileDTO);

    /**
     * 图纸映射列表查询
     *
     * @param fileDTO
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2021/10/28 10:36
     */
    List<Code> listFile(FileDTO fileDTO);

    /**
     * 获取文件管点的映射关系
     *
     * @param fileId
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2021/10/28 11:00
     */
    List<Code> getFilePoint(String fileId);

    /**
     * 获取文件管线的映射关系
     *
     * @param fileId
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2021/10/28 11:00
     */
    List<Code> getFileLine(String fileId);

    List<FileVO> getFileByPointId(List<String> list);

    List<FileVO> getFileByLineId(List<String> list);
}
